import { Module } from "vuex";
import { RootState } from "../utils/store.type";

export interface MqttData {
	aircraftStateConstant : string;
	// 机巢状态
	nestStateConstant : string;
	// 飞机电量 %
	aircraftBatteryChargeInPercent : number;
	// 卫星数
	satelliteCount : number;
	// 信号
	aircraftDownLinkSignal : number;
	aircraftUpLinkSignal : number;
	// 温度
	insideACTemperature : number;
	// 风速
	speed : number;
	// 雨量
	rainfall : number
	// 飞行模式
	flightMode : string;
	// 遥控器状态
	isRemoteControllerConnected : boolean;
	// 高度
	aircraftAltitude : number;
	ultrasonicHeightInMeters : number;
	// 飞机状态
	isAircraftConnected : boolean;
	//传输状态
	currentState : string;
	//传输速度
	currentTransportRate : number;
	motorStatus : {
		// 充电状态
		chargeState : number;
		// 舱门状态
		cabinState : number;
		// 归中状态
		syncState : number;
		liftState : number;
		gatherStatus : number;
	}
	[key : string] : any;
	// 传输进度百分比
	transportedSize : string;

	// 夜灯
	lightstatus : number,

	// 电流过载
	isCurrentOverloaded : boolean,
	// 温度过热
	isOverHeated : boolean,
	// 温度过低
	isLowTemperature : boolean,
	// 电池短路
	isShortCircuited : boolean,
	// 
	isCustomDischargeEnabled : boolean,
	// 欠压电芯
	lowVoltageCellIndex : number,
	// 损坏电芯
	damagedCellIndex : number

	// 循环次数
	numberOfDischarges : number,
	// 电池温度
	aircraftBatteryCurrentTemperature : number,
	// 电池电压
	aircraftBatteryCurrentVoltage : number,
	// 连接状态
	isBatteryConnected : string

	// 电池使用时间
	remainingChargeInmAh : number,
	// 遥控器电量
	remainingChargeInPercent : number,
	// 充电状态
	isCharging : boolean,

	// 无人机位置纬度
	aircraftLocationLatitude : number,
	// 无人机位置经度
	aircraftLocationLongitude : number,

	// 是否进入飞行模式
	areMotorsOn : boolean,
	// 飞机俯仰
	aircraftPitch : number,
	// 飞机滚转
	aircraftRoll : number,
	// 飞机偏航
	aircraftYaw : number,
	// 水平速度
	aircraftHSpeed : number,
	aircraftVSpeed : number,
	aircraftFlyInSecond : number
	currentMissionID : string,
	// 无人飞机充电状态
	ChargerStatus : number,
	// 机槽经纬度
	homeLocationLatitude : number,
	homeLocationLongitude : number,
	execMissionID : string;

	// 虚拟摇杆
	virtualStickState : boolean,
	// 拍照模式
	currentCameraMode : string,
	// 推流状态
	isLiveStreaming : boolean,

	rtkStatus : boolean,

	// 云台角度
	gimbal : {
		gimbalPitch : number,
		gimbalYaw : number,
		gimbalRoll : number
	}
	totalFileNum : number,
	failedNum : number,
	// 温度
	Temperature : number,
	// 天气
	weather : {
		// 风速
		WindSpedd : number,
		// 降水
		CurrRainSnowStatu : number
	}

}

export interface NestPayload {
	id : string;
	data : Partial<MqttData>;
}

const state = {
	mqttData: {
	} as unknown as Record<string, Partial<MqttData>>,
};

type State = typeof state;

const nestState : Module<State, RootState> = {
	namespaced: true,

	state,

	mutations: {
		setNestData(state : State, payload : NestPayload) : void {
			const data = {
				[payload.id]: {
					...state.mqttData[payload.id],
					...payload.data
				},
			}
			state.mqttData = {
				...state.mqttData,
				...data
			};
		},
	},
};

export default nestState;